package dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import modelo.Siembra;

public class AdmPersistenciaSiembra{

	public static AdmPersistenciaSiembra instancia;

	public static AdmPersistenciaSiembra getinstancia (){
		if(instancia==null)
			instancia = new AdmPersistenciaSiembra();
		return instancia;
	}
	
	public Vector<Siembra> selectAll(){
		try{
			Vector<Siembra> resultados = new Vector<Siembra>();
			Connection connection = PoolConnection.getPoolConnecion().getConnection();
			Statement s = connection.createStatement();
			ResultSet rs = s.executeQuery("SELECT * FROM Siembra");
			while(rs.next()){
					int codigo = rs.getInt(1);
					float cantidad =  rs.getFloat(2);
					Date fecha = rs.getDate(3);
					Siembra si = new Siembra(codigo,cantidad,fecha);
					resultados.add(si);
					System.out.println("Se cargo siembra : "+codigo);
				PoolConnection.getPoolConnecion().releaseConnection(connection);
				return resultados;
			}
		}
		catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public Siembra select(int codigo){
		try{
		Siembra si = null;
		Connection connection = PoolConnection.getPoolConnecion().getConnection();
		PreparedStatement s= connection.prepareStatement("select * from Siembra where codigo = ?");
		s.setLong(1, codigo);
		ResultSet rs = s.executeQuery();
		float cant =  rs.getFloat(2);
		Date fecha = rs.getDate(3);
		si = new  Siembra(codigo,cant,fecha);
		PoolConnection.getPoolConnecion().releaseConnection(connection);
		return si;
		}
		catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public void insert(Siembra si){
		try{
			Connection connection = PoolConnection.getPoolConnecion().getConnection();
			PreparedStatement s= connection.prepareStatement("insert into Siembra (codigo,cantidadsembrada,fecha) values (?,?,?)");
			s.setInt(1, si.getCodigo());
			s.setFloat(2, si.getCantidadSembradaTotal());
			s.setDate(3, (Date) si.getFechaSiembra());
			s.executeQuery();
			PoolConnection.getPoolConnecion().releaseConnection(connection);
			}
			catch (SQLException e) {
				e.printStackTrace();
			}	
	}
	
	public void update(Siembra si){
		try{
			Connection connection = PoolConnection.getPoolConnecion().getConnection();
			PreparedStatement s= connection.prepareStatement("update Siembra" +
					"set cantidadsembrada = ?, fecha = ? where codigo = ? ");
			s.setInt(3, si.getCodigo());
			s.setFloat(2, si.getCantidadSembradaTotal());
			s.setDate(1, (Date) si.getFechaSiembra());
			s.executeQuery();
			PoolConnection.getPoolConnecion().releaseConnection(connection);

		}
		catch (SQLException e) {
			e.printStackTrace();
		}	
	}
	
	public void delete(Siembra si){
		try{
			Connection connection = PoolConnection.getPoolConnecion().getConnection();
			PreparedStatement s= connection.prepareStatement("delete * from siembra where codigo = ?");
			s.setInt(1, si.getCodigo());
			s.executeQuery();
			PoolConnection.getPoolConnecion().releaseConnection(connection);
			}
			catch (SQLException e) {
				e.printStackTrace();
			}	
	}
	
	
	
}
